package com.ws.demo03;

import java.io.*;

public class Demo {
    public static void main(String[] args) {
        //1.源文件
        String sourcePath = "src/com/ws/demo2/Demo.java";
        //2目的地
        String targetPath = "src/com/ws/demo03/Demo.txt";
        //复制文件
        copyFile(sourcePath, targetPath);
    }

    /**
     * 文件拷贝的方法
     * @param sourcePath
     * @param targetPath
     */
    private static void copyFile(String sourcePath, String targetPath) {
        //1.创建字节流对象
        //2.创建字节缓冲流对象
        //3/创建byte数据接收读取的数据
        //4.生命length变量接收读取数据的长度
        //5循环读取数据
        //6.将读取到的数据循环输出
        //7.每次循环轻质刷新
        //8.释放资源--》jdk1.7新特性释放
        try( //1.创建字节流对象
             InputStream is = new FileInputStream (sourcePath);
             OutputStream os = new FileOutputStream (targetPath);
             //2.创建字节缓冲流对象
             BufferedInputStream bis = new BufferedInputStream (is);
             BufferedOutputStream bos = new BufferedOutputStream (os);)
        {
            //3/创建byte数据接收读取的数据
            byte[] bytes = new byte[1024 * 1024];
            //4.生命length变量接收读取数据的长度
            int length;
            //5循环读取数据
            while((length=bis.read (bytes)) != -1){
                //6.将读取到的数据循环输出
                bos.write (bytes,0,length);
                //7.每次循环轻质刷新
                bos.flush ();
            }
            //6.将读取到的数据循环输出
            //7.每次循环轻质刷新
            //8.释放资源--》jdk1.7新特性释放


        }catch(Exception e){
            e.printStackTrace ();
        }
    }
}
